package net.ericaro.neojavagen.types;

/**
 * <b>TypeParameter</b> ::= <{@link net .ericaro .neojavagen .types .TypeVariable TypeVariable}> <{@link net .ericaro .neojavagen .types .TypeBound TypeBound}>?
 * 
 * @author eric@ericaro.net
 */
public class TypeParameter extends net.ericaro.neojavagen.JavaPartComposition {
	private net.ericaro.neojavagen.types.TypeBound typeBound;

	private net.ericaro.neojavagen.types.TypeVariable typeVariable;

	public TypeParameter(net.ericaro.neojavagen.types.TypeVariable typeVariable) {
		this.typeVariable = typeVariable;
		this.typeBound = null;
	}

	public TypeParameter(net.ericaro.neojavagen.types.TypeVariable typeVariable, net.ericaro.neojavagen.types.TypeBound typeBound) {
		super();
		this.typeVariable = typeVariable;
		this.typeBound = typeBound;
	}

	public net.ericaro.neojavagen.types.TypeBound getTypeBound() {
		return typeBound;
	}

	public net.ericaro.neojavagen.types.TypeVariable getTypeVariable() {
		return typeVariable;
	}

	public void setTypeBound(net.ericaro.neojavagen.types.TypeBound typeBound) {
		this.typeBound = typeBound;
	}

	public void setTypeVariable(net.ericaro.neojavagen.types.TypeVariable typeVariable) {
		this.typeVariable = typeVariable;
	}

	@Override
	public java.lang.String toString() {
		return print(typeVariable, typeBound);
	}
}
